package cn.xaut.二叉树;

import cn.xaut.剑指offer.m20.TreeNode;

import java.util.ArrayList;
import java.util.List;

/**
 * 257. 二叉树的所有路径
 */
public class demo257 {

    public List<String> binaryTreePaths(TreeNode root) {

        List<String> path = new ArrayList<>();
        constructPath(root, "", path);
        return path;
    }

    public void constructPath(TreeNode node, String s, List<String> path) {
        
        // 递归终止条件
        if (node == null)
            return;
        s += node.val;
        if (node.left == null && node.right == null) {  // 如果该节点为叶子节点
            path.add(s);
            return;
        }
        
        // 递归过程
        s += "->";
        constructPath(node.left, s, path);
        constructPath(node.right, s, path);
    }
}
